import java.io.File;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class Principal extends DefaultHandler 
{
    protected boolean pNumCap;
    protected boolean pTituloCap;
    protected StringBuffer cNumCap;
    protected StringBuffer cTituloCap;

    public static void main(String[] args) 
    {
        try 
        {
            SAXParserFactory fabrica1 = SAXParserFactory.newInstance();
            fabrica1.setValidating(true);
            SAXParser constructor1 = fabrica1.newSAXParser();
            File libro = new File("libro.xml");
            Principal evento = new Principal();
            constructor1.parse(libro, evento);
        } 
        catch (Exception ex) 
        {
            ex.printStackTrace();
        }
    }

    @Override
    public void startElement(String uri, String nombreLocal, String qNombre, Attributes attrbutes) 
    {
        if (qNombre.compareTo("capitulo") == 0) 
        {
            cTituloCap = null;
            cNumCap = null;
        } 
        else 
        {
            if (qNombre.compareTo("numCap") == 0) 
            {
                pNumCap = true;
                cNumCap = new StringBuffer();
            }
            else
            {
                 if (qNombre.compareTo("tituloCap") == 0) 
                 {
                    pTituloCap = true;
                    cTituloCap = new StringBuffer();
                 }   
            }
        }
    }

    public void characters(char[] cha, int comienzo, int largo) 
    {
        if (pTituloCap) 
        {
            cTituloCap.append(cha, comienzo, largo);
        } 
        else 
        {
            if (pNumCap) 
            {
                cNumCap.append(cha, comienzo, largo);
            }
        }
    }

    @Override
    public void endElement(String espacioNombreURI, String nombreLocal, String qNombre) 
    {
        if (qNombre.compareTo("capitulo") == 0) 
        {
            System.out.print("Capitulo: ");
            if (cNumCap != null) 
            {
                System.out.print(cNumCap.toString());
                System.out.print(" ");
            }
            if (cTituloCap != null) 
            {
                System.out.print(cTituloCap.toString());
            }
            System.out.println();
        } 
        else 
        {
            if(qNombre.compareTo("tituloCap") == 0)
            {
                pTituloCap = false;
            } 
            else if(qNombre.compareTo("numCap") == 0)
            {
                pNumCap = false;
            }
        }
    }
}
